using System.Runtime.Serialization;

namespace ActionService.DataTransferObjects
{
    /// <summary>
    /// Order Detail Data Transfer Object.
    /// 
    /// The purpose of the OrderTransferObject is to facilitate transport of 
    /// customer order business data in a serializable format. Business data is kept in 
    /// publicly accessible auto property members. This class has no methods. 
    /// </summary>
    /// <remarks>
    /// Pattern: Data Transfer Objects.
    /// 
    /// Data Transfer Objects are objects that transfer data between processes, but without behavior.
    /// </remarks>
    [DataContract(Name = "OrderDetail", Namespace = "http://www.yourcompany.com/types/")]
    public class OrderDetailDto
    {
        ///// <summary>
        ///// Product name ordered.
        ///// </summary>
        //[DataMember]
        //public string ProductName { get; set; }

        ///// <summary>
        ///// Quantity ordered.
        ///// </summary>
        //[DataMember]
        //public int Quantity { get; set; }

        ///// <summary>
        ///// Unit price for product at order time.
        ///// </summary>
        //[DataMember]
        //public double UnitPrice { get; set; }

        ///// <summary>
        ///// Discount applied to unit price. 
        ///// </summary>
        //[DataMember]
        //public double Discount { get; set; }

        ///// <summary>
        ///// Version number. Used in optimistic concurrency.
        ///// </summary>
        //[DataMember]
        //public string Version { get; set; }

        /// <summary>
        /// Get or set the parent order id for this detail.
        /// </summary>
        [DataMember]
        public int OrderId { get; set; }

        /// <summary>
        /// 
        /// </summary>
        [DataMember]
        public int CategoryId { get; set; }

        /// <summary>
        /// Get or set the product id for this order detail.
        /// </summary>
        [DataMember]
        public int ProductId { get; set; }

        /// <summary>
        /// Get or set Product name of Order Detail (line item).
        /// </summary>
        [DataMember]
        public string ProductName { get; set; }

        /// <summary>
        /// Get or set quantity of Products ordered.
        /// </summary>
        [DataMember]
        public int Quantity { get; set; }

        /// <summary>
        /// Get or set unit price of Product in US$.

        [DataMember]
        public decimal UnitPrice { get; set; }

        /// <summary>
        /// Get or set discount applied to unit price.
        /// </summary>
        [DataMember]
        public decimal Discount { get; set; }


        /// </summary>
        /// </summary>
        [DataMember]
        public string Version { get; set; }

        /// <summary>
        /// 
        /// </summary>
        [DataMember]
        public int Status { get; set; }
    }
}